package com.cwh.taskcenter.domain.system.domainservice;

import com.cwh.taskcenter.domain.system.event.SmsSendEvent;
import com.cwh.taskcenter.domain.system.model.SmsTemplate;

import java.util.Map;

/**
 * @author cwh
 */
public interface SmsSendDomainService {
    Long sendSingleSms(
            String mobile,
            Long userId,
            Integer userType,
            String templateCode,
            Map<String, Object> templateParams
    );

    /**
     * 创建短信日志
     *
     * @param mobile 手机号
     * @param userId 用户编号
     * @param userType 用户类型
     * @param isSend 是否发送
     * @param template 短信模板
     * @param templateContent 短信内容
     * @param templateParams 短信参数
     * @return 发送日志编号
     */
    Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend,
                      SmsTemplate template, String templateContent, Map<String, Object> templateParams);


    /**
     * 执行真正的短信发送
     * 注意，该方法仅仅提供给 MQ Consumer 使用
     *
     * @param event 短信
     */
    void doSendSms(SmsSendEvent event);


}
